package com.lgh.ibs.utils;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import com.lgh.ibs.entity.MavenPom;

/**
 * 项目文件工具
 * @author ghli
 *
 */
public class ProjectFileUtil {
	
	/**
	 * @Title: getProjectDir 
	 * @Description:获取 Maven项目的Pom文件列表 
	 * @param workspacePath
	 * @return
	 * @throws 
	 * @author guohao.li
	 * @dateTime 2016年12月22日 下午3:40:20
	 */
	public static List<String> getProjectDir(String workspacePath){
		List<String> pomFilePathList = new ArrayList<String>();
		File dir = new File(workspacePath);
		File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
		if (files != null) {
			for (int i = 0; i < files.length; i++) {
				if (files[i].isDirectory()) { // 判断是文件还是文件夹
					String pomFile = getProjectPomFile(files[i].getAbsolutePath());
					if(pomFile != null){
						pomFilePathList.add(pomFile);
					}
				}
			}
			
		}
		return pomFilePathList;
	}
	
	/**
	 * 获取Root工程目录
	 * @param workspacePath
	 * @return
	 * @throws Exception 
	 */
	public static MavenPom getRootProjectPomFileInfo(String workspacePath) throws Exception{
		MavenPom mavenPom = null;
		File dir = new File(workspacePath);
		File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
		if (files != null) {
			for (int i = 0; i < files.length; i++) {
				if (files[i].isDirectory()) { // 判断是文件还是文件夹
					String pomFile = getProjectPomFile(files[i].getAbsolutePath());
					if(pomFile != null){
						MavenPom tempPom = MavenPomUtil.getMavenPom(pomFile);
						if("ibs-ibenefit".equals(tempPom.getProjectArtifactId())){
							mavenPom = tempPom;
							mavenPom.setPomFilePath(pomFile);
							break;
						}
					}
				}
			}
			
		}
		return mavenPom;
	}
	
	private static String getProjectPomFile(String projectPath){
		String pomFilePath = null; 
		File dir = new File(projectPath);
		File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
		if (files != null) {
			for (int i = 0; i < files.length; i++) {
				String fileName = files[i].getName();
				if (!files[i].isDirectory()) { // 判断是文件还是文件夹
					if("pom.xml".equals(fileName.toLowerCase() ) ){
						pomFilePath = files[i].getAbsolutePath();
						break;
					}
				} 
			}
			
		}
		return pomFilePath;
	}
	
	
	public static void main(String[] args) {
		getProjectDir("G:\\99无限\\20160612_ihealth_Code_all\\");
	}
}
